package com.inno.lock.processor.annotiation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 单机锁
 * @author shenzeyang
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SingleLock {

    /**
     * 获取锁的等待时间
     * 如果超出时间未获取到锁 会拒绝此次请求
     */
    long timeout() default 2000;

    /**
     * 时间单位
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;

    /**
     * 是否为公平锁
     */
    boolean fair() default false;
}
